package practice;

import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;

public class Practice {
    //需求:
    //不能输字母、重复要重新输入、不能多与少，系统会提示值对不对，位置对不对，A代表位置和值都对了,B代表位置和值都不对
    //例如：有俩个位置和值都对了就是：2A0B
    /*思路：
     * 1.创建一个长度为4的随机数组,里面的随机数为0~9且不重复
     * 2.让用户输入4个不重复的数字,放进数组里
     * */
    public static int[] arr = new int[4];//随机数组
    public static int[] iptArr = new int[4];//随机数组
    public static int A = 0;
    public static int B = 0;


    public static void main(String[] args) {
        createArr();
        System.out.println(Arrays.toString(arr));
        iptNum();
        System.out.println(Arrays.toString(iptArr));
            judge();
    }

    //判断
    public static void judge() {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < iptArr.length; j++) {
                if (arr[i] == iptArr[j] && i == j) {//当值相同,下标位置也相同
                    A++;
                } else if (arr[i] == iptArr[j] && i != j) {//当值相同,下标位置不同
                    B++;
                }
            }
        }
        System.out.println(A + "A" + B + "B");
    }

    //用户输入
    public static void iptNum() {
        while (true) {
            try {
                Scanner scanner = new Scanner(System.in);
                for (int i = 0; i < iptArr.length; i++) {
                    System.out.println("请输入第" + (i + 1) + "个数字");
                    int iptNum = scanner.nextInt();
                    if (iptNum > 9 || iptNum < 0) {
                        System.out.println("超过范围，请重新输入");
                        i--;
                        continue;
                    }
                    boolean bl = true;
                    for (int j = 0; j < iptArr.length; j++) {
                        if (iptNum == iptArr[j]) {
                            bl = false;
                            break;
                        }
                    }
                    if (!bl) {
                        i--;
                        System.out.println("输入重复数字，请重新输入");
                        continue;
                    } else {
                        iptArr[i] = iptNum;
                    }
                }
                break;
            } catch (InputMismatchException e) {
                System.out.println("输入类型有误，请重新输入");
            } catch (Exception e) {
                System.out.println("未知异常");
            }
        }

    }

    //生成随机数组
    public static void createArr() {
        for (int i = 0; i < arr.length; i++) {//需要4个随机数
            int num = (int) (Math.random() * 9);//随机数
            boolean repeat = false;//重复状态
            for (int j = 0; j < i; j++) {//遍历数组
                if (num == arr[j]) {//如果随机数和数组里的数重复
                    repeat = true;
                    break;//如果有重复数字，就不需要必要继续遍历数组找有没有重复的了
                }
            }
            if (repeat) {
                i--;
            } else {//不重复就赋值
                arr[i] = num;
            }
        }
    }
}
